package com.aisi.manager.service.impl;

import com.aisi.manager.mapper.SysRoleMapper;
import com.aisi.manager.mapper.SysRoleUserMapper;
import com.aisi.manager.service.SysRoleService;
import com.aisi.model.dto.system.SysRoleDto;
import com.aisi.model.entity.system.SysRole;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author: shenjianZ
 * @Date: 2024/2/17 10:52
 * @Description:
 */

@Service
public class SysRoleServiceImpl implements SysRoleService {

    @Resource
    private SysRoleMapper sysRoleMapper;

    @Resource
    private SysRoleUserMapper sysRoleUserMapper;

    /**
     * 根据分页参数和查询条件查询SysRole分页信息
     *
     * @param current    分页参数中的当前页码
     * @param limit      分页参数中的每页显示数量
     * @param sysRoleDto 查询条件，包含查询参数、排序参数等
     * @return 分页信息，包含当前页码、总记录数、总页数、数据列表等
     */
    @Override
    public PageInfo<SysRole> findSysRoleByPage(Integer current, Integer limit, SysRoleDto sysRoleDto) {
        //设置分页参数
        PageHelper.startPage(current, limit);
        List<SysRole> sysRoles = sysRoleMapper.findSysRoleByPage(sysRoleDto);
        return new PageInfo<>(sysRoles);
    }

    /**
     * 保存系统角色
     *
     * @param sysRole 系统角色
     */
    @Override
    public void saveSysRole(SysRole sysRole) {
        sysRoleMapper.saveSysRole(sysRole);
    }

    /**
     * 更新系统角色
     *
     * @param sysRole 系统角色
     */
    @Override
    public void updateSysRole(SysRole sysRole) {
        sysRoleMapper.updateSysRole(sysRole);
    }

    /**
     * 根据ID删除系统角色
     *
     * @param id 系统角色ID
     */
    @Override
    public void deleteSysRoleById(Long id) {
        sysRoleMapper.deleteSysRoleById(id);
    }

    @Override
    public Map<String, Object> findAllSysRoles(Long userId) {
        List<SysRole> sysRoles = sysRoleMapper.findAllSysRoles();
        Map map = new HashMap();
        map.put("allRolesList", sysRoles);
        List<SysRole> sysRoleList = sysRoleUserMapper.findAllSysRoleUserById(userId);
        map.put("sysUserRoles", sysRoleList);
        return map;
    }
}
